home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
60
/
60.xpi
/
chrome
/
webdeveloper.jar
/
content
/
webdeveloper
/
common
/
file.js
< prev
next >
Wrap
Text File
|
2009-06-30
|
8KB
|
252 lines
// Gets the size of a file
function webdeveloper_getFileSize(url)
{
var cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService);
var cacheSession = null;
var file = null;
var fileSize = null;
var readAccess = Components.interfaces.nsICache.ACCESS_READ;
// Try to get the file size from the HTTP cache
try
{
cacheSession = cacheService.createSession("HTTP", 0, true);
cacheSession.doomEntriesIfExpired = false;
file = cacheSession.openCacheEntry(url, readAccess, false);
// If there is a file
if(file)
{
fileSize = file.dataSize;
}
}
catch(exception)
{
// Try to get the file size from the FTP cache
try
{
cacheSession = cacheService.createSession("FTP", 0, true);
cacheSession.doomEntriesIfExpired = false;
file = cacheSession.openCacheEntry(url, readAccess, false);
// If there is a file
if(file)
{
fileSize = file.dataSize;
}
}
catch(exception)
{
fileSize = null;
}
}
// If the file size could not be retrieved from the cache
if(!fileSize)
{
// Try to download the file
try
{
var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
fileSize = ioService.newChannelFromURI(ioService.newURI(url, null, null)).open().available();
}
catch(exception)
{
fileSize = null;
}
}
return fileSize;
}
// Gets the uncompressed size of a file
function webdeveloper_getUncompressedFileSize(url)
{
var cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService);
var cacheSession = null;
var file = null;
var fileCompressed = true;
var fileSize = null;
var readAccess = Components.interfaces.nsICache.ACCESS_READ;
// Try to get the file size from the HTTP cache
try
{
cacheSession = cacheService.createSession("HTTP", 0, true);
cacheSession.doomEntriesIfExpired = false;
file = cacheSession.openCacheEntry(url, readAccess, false);
}
catch(exception)
{
// Try to get the file size from the FTP cache
try
{
cacheSession = cacheService.createSession("FTP", 0, true);
cacheSession.doomEntriesIfExpired = false;
file = cacheSession.openCacheEntry(url, readAccess, false);
}
catch(exception)
{
file = null;
}
}
// If there is a file
if(file)
{
var encoding = null;
var responseHeaders = null;
// Try to get the cache encoding
try
{
// Specific case-sensitive required
encoding = file.getMetaDataElement("request-Accept-Encoding");
}
catch(exception)
{
encoding = null;
// Try to get the response headers
try
{
// Specific case-sensitive required
responseHeaders = file.getMetaDataElement("response-head");
}
catch(exception)
{
responseHeaders = null;
}
}
// If the cache is not GZIP encoded
if((!encoding || encoding.indexOf("gzip") == -1) && (!responseHeaders || responseHeaders.indexOf("Content-Encoding: gzip") == -1))
{
fileCompressed = false;
}
}
// If the file is compressed
if(fileCompressed)
{
// Try to download the file
try
{
var request = new XMLHttpRequest();
request.open("get", url, false);
request.send(null);
fileSize = request.responseText.length;
}
catch(exception)
{
fileSize = null;
}
}
return fileSize;
}
// Retrieves the source from the given URL
function webdeveloper_retrieveSource(url)
{
var source = null;
// If the URL is not entirely generated
if(url.indexOf("wyciwyg://") != 0)
{
var cacheService = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService);
var cacheSession = null;
var file = null;
var readAccess = Components.interfaces.nsICache.ACCESS_READ;
// Try to get the file size from the HTTP cache
try
{
cacheSession = cacheService.createSession("HTTP", 0, true);
cacheSession.doomEntriesIfExpired = false;
file = cacheSession.openCacheEntry(url, readAccess, false);
}
catch(exception)
{
// Try to get the file size from the FTP cache
try
{
cacheSession = cacheService.createSession("FTP", 0, true);
cacheSession.doomEntriesIfExpired = false;
file = cacheSession.openCacheEntry(url, readAccess, false);
}
catch(exception)
{
file = null;
}
}
// If there is a file
if(file)
{
var encoding = null;
var responseHeaders = null;
// Try to get the cache encoding
try
{
// Specific case-sensitive required
encoding = file.getMetaDataElement("request-Accept-Encoding");
}
catch(exception)
{
encoding = null;
// Try to get the response headers
try
{
// Specific case-sensitive required
responseHeaders = file.getMetaDataElement("response-head");
}
catch(exception)
{
responseHeaders = null;
}
}
// If the cache is not GZIP encoded
if((!encoding || encoding.indexOf("gzip") == -1) && (!responseHeaders || (responseHeaders.indexOf("Content-Encoding: deflate") == -1 && responseHeaders.indexOf("Content-Encoding: gzip") == -1)))
{
var inputStream = file.openInputStream(0);
var scriptableStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
scriptableStream.init(inputStream);
source = scriptableStream.read(scriptableStream.available());
scriptableStream.close();
inputStream.close();
}
}
// If the source has not been loaded
if(!source)
{
// Try to load the URL
try
{
var request = new XMLHttpRequest();
request.open("get", url, false);
request.send(null);
source = request.responseText;
}
catch(exception)
{
source = null;
}
}
}
return source;
}